import datetime
from threading import Timer

import psutil


def MonitorSystem(logfile=None):
    # 获取cpu使用情况
    cpuper = psutil.cpu_percent()
    # 获取内存使用情况：系统内存大小，使用内存，有效内存，内存使用率
    mem = psutil.virtual_memory()
    # 内存使用率
    memper = mem.percent
    # 获取当前时间
    now = datetime.datetime.now()
    ts = now.strftime('%Y-%m-%d %H:%M:%S')
    line = f'{ts} cpu:{cpuper}%, mem:{memper}%'
    print(line)
    if logfile:
        logfile.write(line)
    Timer(3, MonitorSystem).start()

def MonitorNetWork(logfile = None):
    #获取网络收信息
    netinfo = psutil.net_io_counters()
    #获取当前时间
    now = datetime.datetime.now()
    ts = now.strftime('%Y-%m-%d %H:%M:%S')
    line = f'{ts} bytessent={netinfo.bytes_sent}, bytesrecv={netinfo.bytes_recv}'
    print(line)
    if logfile:
        logfile.write(line)
    Timer(1, MonitorNetWork).start()

# 记录当前时间
print(datetime.datetime.now())
# 3S执行一次
sTimer = Timer(3, MonitorSystem)
# 1S执行一次
nTimer = Timer(1, MonitorNetWork)
# 使用线程方式执行
sTimer.start()
nTimer.start()
# 等待结束
sTimer.join()
nTimer.join()
# 记录结束时间
print(datetime.datetime.now())
